3.7 [Packages] Sections
These are optional sections. If there are files listed under a [Sources]
section, then the INF file is required to list the MdePkg/MdePkg.dec file as
the first file in a [Packages]
section. This section is also required if the
module uses PCDs for both source and the binary "As Built" INF modules.
Summary
Defines the [Packages]
section tag that is used in EDK II module INF files.
Each entry in this section contains a directory name, forward slash character
and the name of the DEC file contained in the directory name.
Packages must be listed in the order that may be required for specifying
include path statements for a compiler. For example, the MdePkg/MdePkg.dec
file must be listed before the MdeModulePkg/MdeModulePkg.dec
file. If there
are PCDs listed in the generated "As Built" INF, the packages that declare any
PCDs must be listed in this section.
Each package filename must be listed only once per section. Package filenames listed in architectural sections are not permitted to be listed in the common architectural section.
The "common"
architecture modifier in a section tag must not be combined with
other architecture type; doing so will result in a build break.
Packages listed under the "common"
architecture section must not be listed in
sections that have other architecture modifiers.
Prototype
<Packages> ::= "[Packages" [<com_attrs>] "]" <EOL> <Statements>*
<com_attrs> ::= {".common"} {<attrs>}
<attrs> ::= <Archs> ["," <TS> "Packages" <Archs>]
<Archs> ::= "." <arch>
<Statements> ::= {<MacroDefinition>} {<PkgStatements>}
<PkgStatements> ::= <TS> <Filename> [<Field2>] <EOL>
<Field2> ::= <FS> <FeatureFlagExpress>
<FeatureFlagExpress> ::= <Boolean>
Parameters
Filename
Paths listed in the [Packages]
section contain a directory name, forward
slash character and the name of the DEC file contained in the directory name.
Use of "..", "." and "../" in the directory path is not permitted. Use of an
absolute path is prohibited.
FeatureFlagExpress
When present, the feature flag expression determines whether the entry line is valid. If the feature flag expression evaluates to FALSE, this entry will be ignored by the EDK II build tools.
Example
[Packages]
MdePkg/MdePkg.dec
MdeModulePkg/MdeModulePkg.dec
[Packages.IA32]
DEFINE CPUS = IA32FamilyCpuPkg
$(CPUS)/DualCore/DualCore.dec